package cn.seocoo.platform.user.service;

import cn.seocoo.platform.car.dto.CarDto;
import cn.seocoo.platform.user.domain.AppUser;
import cn.seocoo.platform.user.domain.AppUserDto;
import cn.seocoo.platform.user.dto.UnitFrom;
import cn.seocoo.platform.user.dto.UserFrom;
import cn.seocoo.platform.user.dto.UserInfo;
import org.springframework.ui.ModelMap;

import java.util.List;
import java.util.Map;

/**
 * APP注册用户 服务层
 * 
 * @author wujian
 * @date 2019-12-20
 */
public interface IAppUserService 
{
	/**
     * 查询APP注册用户信息
     * 
     * @param id APP注册用户ID
     * @return APP注册用户信息
     */
	public AppUser selectAppUserById(Integer id);
	
	/**
     * 查询APP注册用户列表
     * 
     * @param appUser APP注册用户信息
     * @return APP注册用户集合
     */
	public List<AppUser> selectAppUserList(AppUser appUser);
	
	/**
     * 新增APP注册用户
     * 
     * @param appUser APP注册用户信息
     * @return 结果
     */
	public int insertAppUser(AppUser appUser);
	
	/**
     * 修改APP注册用户
     * 
     * @param appUser APP注册用户信息
     * @return 结果
     */
	public int updateAppUser(AppUser appUser);
		
	/**
     * 删除APP注册用户信息
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteAppUserByIds(String ids);



	AppUser selectAppUserByLoginName(String loginName);

	/**
	 * @Author WuJian
	 * @Description //用户注册或绑定
	 * @Date 16:06 2019/12/23
	 * @Param [loginName]
	 * @return void
	 **/
	AppUserDto firstRegistUser(String loginName, String wechatOpenId, String qqOpenId);

    /**
     * @Author WuJian
     * @Description 根据openId查询用户
     * @Date 2019/12/24
     * @Param [appUserTemp]
     * @return cn.seocoo.platform.user.domain.AppUser
     **/
	AppUser selectAppUserByOpenId(AppUser appUserTemp);


	/**
	 * @Author WuJian
	 * @Description 用户登录
	 * @Date 2019/12/24
	 * @Param [appUserTemp]
	 * @return cn.seocoo.platform.user.domain.AppUser
	 **/
	Map<String,Object> loginUser(AppUser appUserTemp);

	/**
	 * @Author WuJian
	 * @Description //用户实名认证
	 * @Date 18:38 2019/12/29
	 * @Param [userFrom]
	 * @return void
	 **/
	Map<String, Object> save(UserFrom userFrom) throws Exception;

	/**
	 * @Author WuJian
	 * @Description //商家认证
	 * @Date 13:55 2019/12/30
	 * @Param [unitFrom]
	 * @return void
	 **/
	Integer autherUnit(UnitFrom unitFrom);

	/**
	 * @Author WuJian
	 * @Description //获取用户类型
	 * @Date 18:46 2019/12/30
	 * @Param [appUserId]
	 * @return cn.seocoo.platform.user.dto.UserInfo
	 **/
    UserInfo getApiUserInfo(Integer appUserId);

    /**
     * @Author WuJian
     * @Description //我的发布
     * @Date 14:04 2020/1/3
     * @Param [pageNum, pageSize, appUserId]
     * @return java.util.List<cn.seocoo.platform.car.dto.CarDto>
     **/
    List<CarDto> getCarList(Integer pageNum, Integer pageSize, Integer appUserId);

    /**
     * @Author WuJian
     * @Description //点击卖车时,校验用户的发布车辆数据
     * @Date 15:27 2020/1/6
     * @Param [appUserId]
     * @return java.util.Map<java.lang.String,java.lang.String>
     **/
    Map<String, String> checkUserCarNum(Integer appUserId);
}
